#encoding='gbk'


import random
import unittest

class TestSequenceFunctions(unittest.TestCase):
    def setUp(self):
        self.seq= list(range(10))
    def tearDown(self):
        pass
    def test_choice(self):
        element= random.choice(self.seq)
        self.assertTrue(element in self.seq)
    def test_sample(self):
        with self.assertRaises(ValueError):
            random.sample(self.seq,20)
        for element in random.sample(self.seq,5):
            self.assertTrue(element in self.seq)

class TestDictValueFormatFunctions(unittest.TestCase):
    def setUp(self):
        self.seq= list(range(10))
    def tearDown(self):
        pass
    def test_shuffle(self):
        random.shuffle(self.seq)
        self.seq.sort()
        self.assertEqual(self.seq,list(range(10)))
        self.assertRaises(TypeError,random.shuffle,(1,2,3))

class TestDict(unittest.TestCase):
    def setUp(self):
        self.seq= list(range(10))
    def tearDown(self):
        pass
    def test_shuffle(self):
        random.shuffle(self.seq)
        self.seq.sort()
        self.assertEqual(self.seq,list(range(10)))
        self.assertRaises(TypeError,random.shuffle,(1,2,3))

if __name__=='__main__':
    suite1= unittest.TestLoader().loadTestsFromTestCase(TestSequenceFunctions)
    suite2= unittest.TestLoader().loadTestsFromTestCase(TestDict)
    suite3= unittest.TestLoader().loadTestsFromTestCase(TestDictValueFormatFunctions)
    suite= unittest.TestSuite([suite1,suite2,suite3])
    #suite= unittest.TestSuite(suite2,suite3)
    #suite= unittest.TestSuite(suite3)
    unittest.TextTestRunner(verbosity=2).run(suite)
